package cn.iocoder.yudao.module.product.service.liked;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.product.controller.admin.liked.vo.ProductLikedPageReqVO;
import cn.iocoder.yudao.module.product.controller.app.liked.vo.AppLikedPageReqVO;
import cn.iocoder.yudao.module.product.dal.dataobject.liked.ProductLikedDO;
import jakarta.validation.Valid;

/**
 * 商品收藏 Service 接口
 *
 * @author jason
 */
public interface ProductLikedService {

    /**
     * 创建商品收藏
     *
     * @param userId 用户编号
     * @param commentId comment 编号
     */
    Long createLiked(Long userId, Long commentId);
    /**
     * 创建商品收藏
     *
     * @param userId 用户编号
     * @param commentId comment 编号
     */
    Long createOrUpdateLiked(Long userId, Long commentId,Boolean liked);
    /**
     * 取消商品收藏
     *
     * @param userId 用户编号
     * @param commentId comment 编号
     */
    void deleteLiked(Long userId, Long commentId);

    /**
     * 分页查询用户收藏列表
     *
     * @param userId 用户编号
     * @param reqVO 请求 vo
     */
    PageResult<ProductLikedDO> getLikedPage(Long userId, @Valid AppLikedPageReqVO reqVO);

    /**
     * 分页查询用户收藏列表
     *
     * @param reqVO 请求 vo
     */
    PageResult<ProductLikedDO> getLikedPage(@Valid ProductLikedPageReqVO reqVO);

    /**
     * 获取收藏过商品
     *
     * @param userId    用户编号
     * @param commentId comment 编号
     */
    ProductLikedDO getLiked(Long userId, Long commentId);

    /**
     * 获取用户收藏数量
     *
     * @param userId 用户编号
     * @return 数量
     */
    Long getLikedCount(Long userId);

}
